package com.sys.guacamole;

/**
 * 用于SSH连接使用的终端仿真器的配色方案。它由以分号分隔的一系列名称/值对组成。每个名称/值对之间用冒号分隔，并为终端仿真器调色板中的颜色分配一个值。例如，要默认使用白色背景上的蓝色文本，并将红色更改为紫色阴影，您可以指定：
 * <p>
 * 前景：rgb：00/00 / ff;
 * 背景：rgb：ff / ff / ff;
 * color9：rgb：80/00/80
 * 此格式类似于Xterm使用的颜色配置格式，因此Xterm颜色配置可轻松适用于鳄梨调味酱。此参数是可选的。如果未指定，鳄梨调味酱会在黑色背景上将文本呈现为灰色。
 * <p>
 * 可能的颜色名称为：
 * <p>
 * foreground
 * 设置默认的前景色。
 * <p>
 * background
 * 设置默认背景色。
 * <p>
 * color<n>
 * <n> 在Xterm 256色调色板上的索引处设置颜色。例如， color9指红色。
 * <p>
 * 可能的颜色值为：
 * <p>
 * rgb:RR/GG/BB
 * 使用RGB格式的指定颜色，每个分量使用十六进制。例如， rgb:ff/00/00指定红色。请注意，每个十六进制分量都可以为一到四位数字，但是有效值始终为零扩展或截断为两位数。例如，rgb:f/8/0， rgb:f0/80/00，和 rgb:f0f/808/00f都是指相同的有效颜色。
 * <p>
 * color<n>
 * 使用当前分配给<n>Xterm 256色调色板上的索引 的颜色。例如，color9 指定当前的红色。请注意，将使用颜色值而不是颜色参考，因此，如果color9稍后在配色方案配置中进行更改，则该新颜色将不会反映在此分配中。
 * <p>
 * 为了向后兼容，Guacamole还将接受四个特殊值作为配色方案参数：
 * <p>
 * black-white
 * 在白色背景的黑文本。
 * <p>
 * gray-black
 * 在黑背景的灰色文本。这是默认的配色方案。
 * <p>
 * green-black
 * 在黑色背景的绿色文本。
 * <p>
 * white-black
 * 在黑色背景的白色文本。
 */
public enum ColorScheme {
    foreground("foreground"),//设置默认的前景色。
    Background("background"),//设置默认背景色。
    Color("color"),
    BlackWhite("black-white"),
    GrayBlack("gray-black"),
    GreenBlack("green-black"),
    WhiteBlack("white-black"),
    Rgb("rgb");

    private String value;

    ColorScheme(String value) {
        this.value = value;
    }

    public ColorScheme setRGB(int r, int g, int b) {
        if ("rgb".equals(this.value)) {
            this.value = value + ":" + r + "/" + g + "/" + b;
        }
        return this;
    }

    public ColorScheme setColor(int c) {
        if ("color".equals(this.value)) {
            this.value = value + c;
        }
        return this;
    }

    public String getValue() {
        return this.value;
    }

}
